% \iffalse meta-comment
%
% Copyright (C) 2016 by japinli <japinli@hotmail.com>
% ---------------------------------------------------
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License. either
% version 1.3 of this license or (at your option) any later
% version. The latest version of this license is in:
%
%     http://www.latex-project.org/lppl.txt
%
% and version 1.3 or later is part of all distributions of
% LaTeX version 2005/12/01 or later.
%
% \fi
%
% \iffalse
%
%<*driver>
\ProvidesFile{swustthesis.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{swustextra}
%<package>    [2016/08/21 v0.0.2 SWUST Thesis Extra Package]
%<class>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<class>\ProvidesClass{swustthesis}
%<*class>
    [2016/08/21 v0.0.2 SWUST Thesis Template]
%</class>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage[paper=a4paper,hmargin={1.5in,1in},vmargin=1.5in]{geometry}
\usepackage{hypdoc}
\hypersetup{
  bookmarksopen=true,
  bookmarksnumbered=true,
  CJKbookmarks=true,
  unicode=true,
  allcolors=blue,
}

\EnableCrossrefs
\CodelineIndex
\RecordChanges

\usepackage[UTF8, heading = true]{ctex}
\ctexset{
  section = {
    format = \Large\sffamily\bfseries\raggedright,
    name = {第,节},
  },
}

\usepackage{tabularx}
\usepackage{booktabs}

\renewcommand\glossaryname{历史变更}
\GlossaryPrologue{\section*{\glossaryname}}
\renewcommand{\indexname}{索引}
\IndexPrologue{\section*{\indexname}
  \textit{意大利体的数字表示描述对应索引的页码；
    带下划线的数字表示定义对应索引项的代码行号；
    罗马字体的数字表示使用对应索引项的代码行号。}
}

\begin{document}
  \DocInput{swustthesis.dtx}
  \PrintChanges
  \PrintIndex
\end{document}

%</driver>
% \fi
%
% \CheckSum{0}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!    Double quote    \"    Hash (number)    \#
%   Dollar        \$    Percent         \%    Ampersand        \&
%   Acute accent  \'    Left paren      \(    Right paren      \)
%   Asterisk      \*    Plus            \+    Comma            \,
%   Minus         \-    Point           \.    Solidus          \/
%   Colon         \:    Semicolon       \;    Less than        \<
%   Equals        \=    Greater than    \>    Question mark    \?
%   Commercial at \@    Left bracket    \[    Backslash        \\
%   Right bracket \]    Circumflex      \^    Underscore       \_
%   Grave accent  \`    Left brace      \{    Vertical bar     \|
%   Right brace   \}    Tilde           \~}
%
%
% \changes{v0.0.1}{2016/06/11}{初始化~swustthesis项目}
% \changes{v0.0.2}{2016/08/21}{使用~dtx~创建文件类文件}
% \changes{v0.0.2}{2016/08/22}{添加编译说明文档}
% \changes{v0.0.2}{2016/08/23}{修改图表引用格式}
% \changes{v0.0.2}{2016/08/29}{添加参考文献格式定义，部分格式尚未完成}
%
% \GetFileInfo{swustthesis.dtx}
%
% \DoNotIndex{\if,\else,\fi,}
% \DoNotIndex{\DeclareBoolOption,\DeclareComplementaryOption,\CurrentOption}
% \DoNotIndex{\DeclareDefaultOption,\kvsetkeys,\SetupKeyvalOptions}
% \DoNotIndex{\ProcessKeyvalOptions,\PassOptionsToClass}
% \DoNotIndex{\setmainfont,\setmonofont,\setsansfont}
% \DoNotIndex{\hypersetup,\newCJKfontfamily}
% \DoNotIndex{\ifswust@opt@bachelor,\ifswust@opt@master,\ifswust@opt@doctor}
% \DoNotIndex{\ifswust@page@oneside,\ifswust@page@openany}
% \DoNotIndex{\swust@page@oneside,\swust@page@pageouterfalse}
% \DoNotIndex{\endcsname,\expandafter,\gdef,\hskip,\hb@xt@,\hss,\hspace}
% \DoNotIndex{\relax,\swust@define@term,\underline,\csname,\ccwd}
% \DoNotIndex{\newcommand,\renewcommand,\newenvironment,\renewenvironment}
% \DoNotIndex{\mainmatter,\frontmatter,\end,\def,\makebox,\cdot}
% \DoNotIndex{\begin,\makeheadrule,\newpagestyle,\pagenumbering}
% \DoNotIndex{\par,\pdfbookmark,\raggedright,\heiti,\if@openright}
% \DoNotIndex{\@afterindenttrue,\@chapter,\@mainmatterfalse,\@mainmattertrue}
% \DoNotIndex{\@schapter,\@topnum,\geometry,\global,\centering,\chapter}
% \DoNotIndex{\baselineskip,\chaptertitle,\cleardoublepage,\clearpage}
% \DoNotIndex{\contentspage,\ctexset,\secdef,\setfoot,\setfootrule,\songti}
% \DoNotIndex{\sethead,\thepage,\tableofcontents,\textbf,\thecontentslabel}
% \DoNotIndex{\vskip,\vspace,\z@,\zihao,\titlerule,\titlecontents}
% \DoNotIndex{\rule,\pagestyles,\swust@save@tableofcontents,\let,\linewidth}
% \DoNotIndex{\\,\restoregeometry,\pagestyle}
%
% \title{\textsf{swustthesis} 使用说明}
% \author{japinli <japinli@hotmail>}
% \date{\filedate\ \fileversion}
% \maketitle
%
%
% \section{简介}
%
% \textsf{swustthesis} 是用于排版西南科技大学本科和研究生学位论文的~\LaTeX~模板。
%
% \section{编译方法}
%
% \subsection{文件组成}
% 本模件主要包含以下文件：
% \begin{center}
% \begin{tabularx}{\linewidth}{llX}
%     \toprule
%     类别          & 文件             & 说明 \\
%     \midrule
%     模板文件      & swustthesis.dtx  & 模板原始文件 \\
%                   & swustthesis.ins  & 用于生成文档类文件 \\
%                   & swustthesis.cls  & 文档类文件  \\
%                   & swustthesis.bst  & 参考文献格式定义 \\
%                   & swustextra.sty   & 额外所需宏包及定义 \\
%     \midrule
%     使用手册      & main.pdf         & 论文示例模板 \\
%                   & swustthesis.pdf  & 模板使用说明 \\
%                   & READMD.md        & 项目说明文件 \\
%     \midrule
%     示例文件      & main.tex         & 论文示例模板源文件  \\
%                   & figures/         & 图片存放目录  \\
%                   & chapters/        & 论文章节示例  \\
%     \midrule
%     其他          & Makefile         & GUN Makefile 配置文件 \\
%                   & latexmkrc        & \LaTeX\ 编译配置文件 \\
%     \bottomrule
% \end{tabularx}
% \end{center}
%
% 文件~swustthesis.ins~用于生成~swustthesis~类文件和~swustextra~包文件，
% 该过程中需要读取~swustthesis.dtx~文件；文件~swustthesis.dtx~是模板的
% 原始代码文件，它用于自动生成模板使用说明文件~swustthesis.pdf~。原始模
% 板文件仅供模板开发者使用，一般用户无需使用。~main.tex~是论文示例模板文
% 件，该文件通过引入~chapters/~目录下的文件来组织论文结构，~figures~目录
% 则存放论文中使用到的图片资源。
%
% \subsection{编译}
%
% \begin{enumerate}
% \item make编译：适合~Linux~系统。
%
% \begin{tabularx}{.8\linewidth}{ll}
% \toprule
%  make           & 默认编译所有文件 \\
%  make doc       & 仅编译~swustthesis.pdf~说明文件 \\
%  make cls       & 仅编译~swustthesis.cls~文档类文件 \\
%  make main      & 仅编译~main.pdf~示例文件 \\
%  make clean     & 清理中间文件  \\
% \bottomrule
% \end{tabularx}
%
% \item latexmk编译：适合~Windows/Linux~系统。
%
% \begin{tabularx}{.8\linewidth}{ll}
% \toprule
%  latexmk main             & 编译~main.pdf~示例文件 \\
%  latexmk swustthesis.dtx  & 编译~swustthesis.pdf~说明文件 \\
%  latexmk swustthesis.ins  & 编译~swustthesis.cls~文档类文件 \\
%  latexmk -c               & 清理中间文件  \\
% \bottomrule
% \end{tabularx}
%
% \end{enumerate}
%
% \StopEventually{}
%
% \section{swustthesis 代码实现}\label{sec:codeimplementation}
%
% \subsection{声明选项}
%
%     \begin{macrocode}
%<*class>
\RequirePackage{kvoptions}
%    \end{macrocode}
% |swust@opt| 用于设置论文类型及打印方式
%    \begin{macrocode}
\SetupKeyvalOptions{family=swust@opt,prefix=swust@opt@,setkeys=\kvsetkeys}
\DeclareBoolOption[false]{bachelor}
\DeclareBoolOption[false]{master}
\DeclareBoolOption[false]{doctor}
\DeclareBoolOption[false]{pdf}
\DeclareComplementaryOption{print}{pdf}
%    \end{macrocode}
% |swust@page| 用于设置文档分页样式
%    \begin{macrocode}
\SetupKeyvalOptions{family=swust@pae,prefix=swust@page@,setkeys=\kvsetkeys}
\DeclareBoolOption[false]{oneside}
\DeclareComplementaryOption{twoside}{oneside}
\DeclareBoolOption[false]{openany}
\DeclareComplementaryOption{openright}{openany}
\DeclareBoolOption[true]{pageouter}
\DeclareComplementaryOption{pagecenter}{pageouter}
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
%    \end{macrocode}
% 处理|swust@opt|选项，判断论文类型，若没指定默认使用本科论文模板
%    \begin{macrocode}
\ProcessKeyvalOptions{swust@opt}
\ifswust@opt@master\relax\else
  \ifswust@opt@doctor\relax\else
    \swust@opt@bachelortrue
  \fi
\fi
%    \end{macrocode}
% 设置模板打印方式
%    \begin{macrocode}
\ifswust@opt@bachelor
    \swust@page@onesidetrue
    \swust@page@pageouterfalse
\fi
\ifswust@opt@pdf
    \swust@page@onesidetrue
    \swust@page@pageouterfalse
\fi
%    \end{macrocode}
% 将选项交给~ctexbook~处理
%    \begin{macrocode}
\ifswust@page@openany
    \PassOptionsToClass{openany}{ctexbook}
\fi
\ifswust@page@oneside
    \PassOptionsToClass{oneside}{ctexbook}
\fi
%    \end{macrocode}
% 载入~ctexbook~文档类，并设置纸张大小、编码格式及字号
%    \begin{macrocode}
\LoadClass[a4paper,UTF8,zihao=-4]{ctexbook}
%    \end{macrocode}
%
% \subsection{字体相关}
% 设置西文字体，中文字体由~ctex~自动设置
%    \begin{macrocode}
\setmainfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Courier New}
%    \end{macrocode}
% 本科论文中使用了华文形楷，创建该字体\footnote{~Linux~下貌似没有该字体，
% 需要进行安装。}
%    \begin{macrocode}
\newCJKfontfamily{\hwxk}{STXingkai}
%    \end{macrocode}
%
% \subsection{超链接与书签}
%    \begin{macrocode}
\RequirePackage{hyperref}
\hypersetup{
  CJKbookmarks=true,
  bookmarksopen=true,
  bookmarksnumbered=true,
  bookmarksopenlevel=1,
  pdfborder= 0 0 0,
  unicode=true,
  linktoc=all,
  allcolors=black,
  colorlinks=true,
}
%    \end{macrocode}
%
% \subsection{定义命令}
% \begin{macro}{\zhspace}
% 生成整数倍汉字宽度的空格，默认为~1~
%    \begin{macrocode}
\newcommand{\zhspace}[1][1]{\hspace{#1\ccwd}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@underline}
% 生成空的下划线，内部使用
%    \begin{macrocode}
\newcommand{\swust@underline}[2][6em]{
  \hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt\relax
}
%    \end{macrocode}
% \end{macro}
% 声明“作者姓名”等项目的命令
%    \begin{macrocode}
\def\swust@define@term#1{
  \expandafter\gdef\csname #1\endcsname##1{
    \expandafter\gdef\csname swust@#1\endcsname{##1}
  }
  \csname #1\endcsname{}
}
\swust@define@term{zhtitle}                  % 中文论文标题
\swust@define@term{entitle}                  % 英文论文标题
\swust@define@term{zhdegree}                 % 中文学位类型
\swust@define@term{endegree}                 % 英文学位类型
\swust@define@term{zhauthor}                 % 作者中文姓名
\swust@define@term{enauthor}                 % 作者英文姓名
\swust@define@term{zhadvisor}                % 指导教师中文姓名
\swust@define@term{enadvisor}                % 指导教师英文姓名
\swust@define@term{zhacademy}                % 学院中文名
\swust@define@term{enacademy}                % 学院英文名
\swust@define@term{zhmajor}                  % 专业中文名
\swust@define@term{enmajor}                  % 专业英文名
\swust@define@term{zhdate}                   % 中文答辩日期
\swust@define@term{endate}                   % 英文答辩日期
\swust@define@term{stuid}                    % 学生学号
\swust@define@term{classified}               % 分类号
\swust@define@term{udc}                      % UDC编号
\swust@define@term{secret}                   % 密级
%    \end{macrocode}
%
% \subsection{页面设置}
% 引用~geometry~宏包设置纸张和页面
%    \begin{macrocode}
\RequirePackage{geometry}
\ifswust@opt@bachelor
  \geometry{
    paper=a4paper,
    paperwidth=21.0cm,paperheight=29.7cm,
    top=3.0cm,bottom=3.0cm,
    left=3.0cm,right=2.5cm,
    headheight=2.0cm,footskip=1.0cm,
  }
\else
  \geometry{
    paper=a4paper,
    paperwidth=21.0cm,paperheight=29.7cm,
    top=3.0cm,bottom=2.5cm,
    left=2.6cm,right=2.6cm,
    headheight=2.0cm,footskip=1.25cm,
  }
\fi
%    \end{macrocode}
% 使用~titlesec~宏包设置页眉页脚
%    \begin{macrocode}
\RequirePackage[pagestyles]{titlesec}
\ifswust@opt@doctor
  \newcommand{\swust@zh@thesis@name}{西南科技大学博士学位论文}
  \newcommand{\swust@en@thesis@name}{A Dissertation Submitted to Southwest
        University of Science and Technology for the Degree of Doctor}
\else
  \ifswust@opt@master
    \newcommand{\swust@zh@thesis@name}{西南科技大学硕士学位论文}
    \newcommand{\swust@en@thesis@name}{A Thesis Submitted to Southwest University
      of Scienceand Technology for the Degree of Master}
  \else
    \newcommand{\swust@zh@thesis@name}{西南科技大学本科毕业论文}
    \newcommand{\swust@en@thesis@name}{A Thesis Submitted to Southwest University
        of Scienceand Technology for the Degree of Bachelor}
  \fi
\fi
%    \end{macrocode}
% \begin{macro}{\swust@header@title}
% 页眉页脚标题
%    \begin{macrocode}
\newcommand{\swust@header@title}{\swust@zh@thesis@name}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@header@size}
% 页眉页脚字号
%    \begin{macrocode}
\newcommand{\swust@header@size}{\zihao{5}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@header@font}
% 页眉页脚字体
%    \begin{macrocode}
\ifswust@opt@bachelor
  \newcommand{\swust@header@font}{\hwxk}
\else
  \newcommand{\swust@header@font}{\songti}
\fi
%    \end{macrocode}
% \end{macro}
% 创建页面风格样式
%    \begin{macrocode}
\newpagestyle{front}[\swust@header@size\swust@header@font]{
  \ifswust@opt@bachelor
    \sethead{}{\swust@header@title}{\thepage}
    \renewcommand{\makeheadrule}{
      \makebox[0pt][l]{\rule[-.3\baselineskip]{\linewidth}{.5pt}}
      \rule[-.5\baselineskip]{\linewidth}{2pt}
    }
  \else
    \sethead[][\swust@header@title][]{}{\chaptertitle}{}
    \setfoot[\thepage][][]{}{}{\thepage}
    \renewcommand{\makeheadrule}{
      \makebox[0pt][l]{\rule[-.3\baselineskip]{\linewidth}{.5pt}}
      \rule[-.4\baselineskip]{\linewidth}{.5pt}
    }
    \setfootrule{.5pt}
  \fi
}
\newpagestyle{main}[\swust@header@size\swust@header@font]{
  \ifswust@opt@bachelor
    \sethead{}{\swust@header@title}{}
    \setfoot{}{\thepage}{}
    \renewcommand{\makeheadrule}{
      \makebox[0pt][l]{\rule[-.3\baselineskip]{\linewidth}{.5pt}}
      \rule[-.5\baselineskip]{\linewidth}{2pt}
    }
  \else
    \sethead[][\swust@header@title][]{}{\chaptertitle}{}
    \setfoot[\thepage][][]{}{}{\thepage}
    \renewcommand{\makeheadrule}{
      \makebox[0pt][l]{\rule[-.3\baselineskip]{\linewidth}{.5pt}}
      \rule[-.4\baselineskip]{\linewidth}{.5pt}
    }
    \setfootrule{.5pt}
  \fi
}
%    \end{macrocode}
% 修该~frontmatter~的页码为大写罗马格式，并调整页面风格
%    \begin{macrocode}
\renewcommand{\frontmatter}{
  \if@openright\cleardoublepage\else\clearpage\fi
  \@mainmatterfalse
  \pagenumbering{Roman}
  \pagestyle{front}
}
%    \end{macrocode}
% 修改~mainmatter~的页码为阿拉伯格式，并调整页面风格
%    \begin{macrocode}
\renewcommand{\mainmatter}{
  \if@openright\cleardoublepage\else\clearpage\fi
  \@mainmattertrue
  \pagenumbering{arabic}
  \pagestyle{main}
}
%    \end{macrocode}
%
% \subsection{标题格式}
% 重定义~chapter~
%    \begin{macrocode}
\renewcommand{\chapter}{
  \if@openright\cleardoublepage\else\clearpage\fi
  \global\@topnum\z@
  \@afterindenttrue
  \secdef\@chapter\@schapter
}
%    \end{macrocode}
% 对subsubsection进行编号
%    \begin{macrocode}
\setcounter{secnumdepth}{4}
%    \end{macrocode}
% 设置标题格式
%    \begin{macrocode}
\ifswust@opt@bachelor
  \ctexset{
    chapter       = {
      name        = {第,章},
      number      = \thechapter,
      format      = \centering\zihao{-2}\heiti,
      beforeskip  = 2ex,
      afterskip   = 1ex,
    },
    section       = {
      format      = \raggedright\zihao{4}\heiti,
      beforeskip  = 1ex,
      afterskip   = .5ex,
    },
    subsection    = {
      format      = \raggedright\zihao{-4}\songti,
      beforeskip  = .5ex,
      afterskip   = 0ex,
    },
    subsubsection = {
      format      = \raggedright\zihao{-4}\songti,
      beforeskip  = 0ex,
      afterskip   = 0ex,
    },
  }
\else
  \ctexset{
    chapter       = {
      name        = {},
      number      = \thechapter,
      format      = \centering\zihao{3},
      beforeskip  = 2ex,
      afterskip   = 1ex,
    },
    section       = {
      format      = \raggedright\zihao{-3},
      beforeskip  = 1ex,
      afterskip   = .5ex,
    },
    subsection    = {
      format      = \raggedright\zihao{4},
      beforeskip  = .5ex,
      afterskip   = 0ex,
    },
    subsubsection = {
      format      = \raggedright\zihao{-4},
      beforeskip  = 0ex,
      afterskip   = 0ex,
    },
  }
\fi
%    \end{macrocode}
%
% \subsection{目录格式}
% 添加目录索引
%    \begin{macrocode}
\newcommand{\swust@pdf@contentsname}{目录}
\let\swust@save@tableofcontents=\tableofcontents
\renewcommand{\tableofcontents}{
  \if@openright\cleardoublepage\else\clearpage\fi
  \pdfbookmark[0]{\swust@pdf@contentsname}{swusttoc}
  \swust@save@tableofcontents
}
%    \end{macrocode}
% \begin{macro}{\contentsname}
% 重定义目录
%    \begin{macrocode}
\renewcommand{\contentsname}{目\zhspace[2] 录}
%    \end{macrocode}
% \end{macro}
% 定义目录相关设置，如需要可以根据本科和硕士不同修改此处进行区别设置
%    \begin{macrocode}
\RequirePackage{titletoc}
\newcommand{\swust@toc@leaders}{\titlerule*[.5pc]{$\cdot$}}
\newcommand{\swust@chap@font}{\heiti}
\newcommand{\swust@chap@size}{\zihao{-4}}
\newcommand{\swust@sect@font}{\songti}
\newcommand{\swust@sect@size}{\zihao{-4}}
\newcommand{\swust@subs@font}{\songti}
\newcommand{\swust@subs@size}{\zihao{-4}}
\newcommand{\swust@chap@toc@indent}{0bp}
\newcommand{\swust@sect@toc@indent}{2\ccwd}
\newcommand{\swust@subs@toc@indent}{4\ccwd}
%    \end{macrocode}
% 设置目录格式
%    \begin{macrocode}
\titlecontents{chapter}
              [\swust@chap@toc@indent]
              {\swust@chap@size\swust@chap@font}
              {\thecontentslabel\hspace*{.5em}}
              {}{\swust@toc@leaders\contentspage}
\titlecontents{section}
              [\swust@sect@toc@indent]
              {\swust@sect@size\swust@sect@font}
              {\thecontentslabel\hspace*{.5em}}
              {}{\swust@toc@leaders\contentspage}
\titlecontents{subsection}
              [\swust@subs@toc@indent]
              {\swust@subs@size\swust@subs@font}
              {\thecontentslabel\hspace*{.5em}}
              {}{\swust@toc@leaders\contentspage}
%    \end{macrocode}
%
% \subsection{原创性声明}
% \begin{macro}{\swust@declare@text}
% 学位论文独创性声明
%    \begin{macrocode}
\newcommand{\swust@declare@text}{
  本人郑重声明：所呈交的学位论文是我个人在导师的指导下进行的研究工作及
  取得的研究成果。尽我所知，除了文中特别加以标注和致谢的地方外，论文中
  不包含其他人已经发表或撰写过的研究成功。与我一同工作的同志对本研究所
  做的任何贡献均已在论文中坐了明确的说明，并表示了感谢。本人依法享有和
  承担由此论文所产生的权利和责任。
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@declare@text}
% 学位论文版权使用授权声明
%    \begin{macrocode}
\newcommand{\swust@warranty@text}{
  本学位论文作者完全了解学校有关保存、使用学位论文的规定，即：研究生在
  西南科技大学学习和工作期间论文工作的知识产权单位属于西南科技大学。同
  意授权西南科技大学保留并向国家有关部门或机构送交该论文的印刷本和电子
  版本，允许该论文被查阅和借阅。同意授权西南科技大学可以将本学位论文的
  全部或部分内容编入有关数据库进行检索，可以采用影印、缩印、扫描或数字
  化等其他复制手段保存和汇编本学位论文。保密论文在解密后遵守此规定。
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@make@statement}
% 原创性声明页面布局
%    \begin{macrocode}
\newcommand{\swust@make@statement}{
  \pdfbookmark[0]{声明}{statement}
  \vspace*{.5cm}
  \begin{center}
    \heiti\zihao{-2}\textbf{学位论文独创性声明}
  \end{center}
  \vskip .5cm
  \par\swust@declare@text
  \begin{flushright}
  \vskip .5cm
  论文作者签名：\makebox[5em]{}
  日期：\makebox[3em]{}年\makebox[2em]{}月\makebox[2em]{}日
  \end{flushright}
  \vskip .5cm
  \begin{center}
    \heiti\zihao{-2}\textbf{学位论文版权使用授权声明}
  \end{center}
  \vskip .5cm
  \par\swust@warranty@text
  \begin{flushright}
  \vskip .5cm
  论文作者签名：\makebox[5em]{}
  日期：\makebox[3em]{}年\makebox[2em]{}月\makebox[2em]{}日
  \vskip .5cm
  指导教师签名：\makebox[5em]{}
  日期：\makebox[3em]{}年\makebox[2em]{}月\makebox[2em]{}日
  \end{flushright}
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{扉页}
% \begin{macro}{\maketile}
% 重定义|\maketitle|，调用|\swust@maketile|生成扉页
%    \begin{macrocode}
\renewcommand{\maketitle}{
  \newgeometry{
    top=3cm,bottom=3cm,
    left=3cm,right=2.5cm,
    headheight=2cm, footskip=.5cm,
  }
  \pagestyle{empty}
  \pdfbookmark[0]{封面}{titlepage}
  \swust@maketitle
  \restoregeometry
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@zh@titlepage}
% 研究生中文扉页
%    \begin{macrocode}
\newcommand{\swust@zh@titlepage}{
  \begin{titlepage}
    \vspace*{1cm}
    \centering
    \songti\zihao{4}
    \begin{tabular}{rp{7cm}rl}
      分类号： & \swust@classified & 学校代码：& 10619         \\
         UDC： & \swust@udc        &     密级：& \swust@secret \\
    \end{tabular}
    \vskip 2cm
    \zihao{-2}\textbf{\swust@zh@thesis@name}
    \vskip .5cm
    \zihao{4}\songti\swust@zhdegree
    \vskip 2cm
    \zihao{2}\heiti\swust@zhtitle
    \vskip 2cm
    \zihao{3}\songti\swust@zhauthor
    \vskip 4cm
    \zihao{4}\songti
    \begin{tabular}{rc}
      \makebox[12em][s]{指导教师姓名、职称：}     & \swust@zhadvisor    \\
      \makebox[12em][s]{学科（专业）或领域名称：} & \swust@zhmajor      \\
      \makebox[12em][s]{学生所属学院：}           & \swust@zhacademy    \\
      \makebox[12em][s]{论文答辩日期：}           & \swust@zhdate       \\
    \end{tabular}
  \end{titlepage}
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@en@titlepage}
% 研究生英文扉页
%    \begin{macrocode}
\newcommand{\swust@en@titlepage}{
  \begin{titlepage}
    \vspace*{1cm}
    \centering
    \zihao{3}\swust@en@thesis@name
    \vskip .5cm
    \zihao{-4}\swust@endegree
    \vskip 2cm
    \zihao{-2}\swust@entitle
    \vskip 5cm
    \zihao{-3}
    \begin{tabular}{rl}
      Candidate: &  \swust@enauthor  \\
      Supervisor: & \swust@enadvisor \\
    \end{tabular}
    \vskip 6cm
    \zihao{-4}
    \swust@endate
  \end{titlepage}
}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\swust@maketitle}
% 用于生成本科和研究生封面
%    \begin{macrocode}
\ifswust@opt@bachelor
  \newcommand{\swust@maketitle}{
    \begin{titlepage}
      \vspace*{1cm}
      \begin{minipage}{3cm}
        \includegraphics[width=3cm]{figures/swust_logo_fig}
      \end{minipage}
      \begin{minipage}{4cm}
        \begin{tabular}{c}
          \includegraphics[width=9cm]{figures/swust_logo_text}    \\
          \zihao{3}Southwest University of Science and Technology \\
        \end{tabular}
      \end{minipage}

      \centering
      \vspace{2cm}
      \heiti\zihao{-0}{本科毕业设计（论文）} \\
      \vspace{3cm}
      \zihao{2}\swust@zhtitle\\
      \vspace{3cm}
      \zihao{-3}
      \begin{tabular}{cc}
        \makebox[4em][s]{学院名称} & \swust@underline[16em]{\swust@zhacademy}  \\
        \makebox[4em][s]{专业名称} & \swust@underline[16em]{\swust@zhmajor}    \\
        \makebox[4em][s]{学生姓名} & \swust@underline[16em]{\swust@zhauthor}   \\
        \makebox[4em][s]{学号}     & \swust@underline[16em]{\swust@stuid}      \\
        \makebox[4em][s]{指导教师} & \swust@underline[16em]{\swust@zhadvisor}  \\
      \end{tabular}\\
      \vspace{3cm}
      \swust@zhdate
    \end{titlepage}
  }
\else
  \newcommand{\swust@maketitle}{
    \begin{titlepage}
      \vspace*{2cm}
      \centering
      \zihao{-2}\textbf{\swust@zh@thesis@name}
      \vskip .5cm
      \songti\zihao{-4}\swust@zhdegree
      \vskip 3cm
      \heiti\zihao{2}\swust@zhtitle
      \vskip 4cm
      \songti\zihao{3}\swust@zhauthor
      \vskip 0cm
      \swust@stuid
      \vskip 7cm
      \zihao{-4}\swust@zhdate
    \end{titlepage}
    \swust@zh@titlepage\cleardoublepage
    \swust@en@titlepage\cleardoublepage
    \swust@make@statement\cleardoublepage
  }
\fi
%    \end{macrocode}
% \end{macro}
%
% \subsection{摘要}
% \begin{environment}{zhabstract}
% 中文摘要
%    \begin{macrocode}
\ifswust@opt@bachelor
  \newenvironment{zhabstract}{
    \begin{center}
      \vspace*{2ex}
      \pdfbookmark[0]{摘要}{zhabstract}
      \zihao{-1}\heiti\swust@zhtitle
      \vspace{1ex}
    \end{center}

    {
      \noindent\zihao{-4}\heiti 摘要：
    }
  }{}
\else
  \newenvironment{zhabstract}{
    \chapter[摘要]{摘\zhspace 要}
  }{}
\fi
%    \end{macrocode}
% \end{environment}
% \begin{environment}{enabstract}
% 英文摘要
%    \begin{macrocode}
\ifswust@opt@bachelor
  \newenvironment{enabstract}{
    \newpage
    \begin{center}
      \vspace*{2ex}
      \pdfbookmark[0]{Abstract}{enabstract}
      \zihao{-1}\textbf{\swust@entitle}
      \vspace{1ex}
    \end{center}

    \noindent\zihao{-4}\textbf{Abstract: }
  }{}
\else
  \newenvironment{enabstract}{
    \chapter[Abstract]{ABSTRACT}
  }{}
\fi
%    \end{macrocode}
% \end{environment}
% \begin{macro}{\zhkeywords}
% 中文关键词
%    \begin{macrocode}
\ifswust@opt@bachelor
  \newcommand{\zhkeywords}[2][\zihao{-4}]{
    \par\phantom{关键词}\par\noindent
    {
      #1{\heiti 关键词: }#2
    }
  }
\else
  \newcommand{\zhkeywords}[2][\zihao{5}]{
    \par\phantom{关键词}\par\noindent
    {
      #1\textbf{关键词：}#2
    }
  }
\fi
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\enkeywords}
% 英文关键词
%    \begin{macrocode}
\ifswust@opt@bachelor
  \newcommand{\enkeywords}[2][\zihao{-4}]{
    \par\phantom{keywords}\par\noindent
    {
      #1\textbf{Key words: }#2
    }
  }
\else
  \newcommand{\enkeywords}[2][\zihao{5}]{
    \par\phantom{keywords}\par\noindent
    {
      #1\textbf{KEY WORDS: }#2
    }
  }
\fi
%    \end{macrocode}
% \end{macro}
%
% \subsection{图、表}
% 使用~ccaption~设置图表双语标题，使用~amsmath~设置图表编号
%    \begin{macrocode}

\RequirePackage{ccaption}
\captiondelim{\hspace{1\ccwd}}
\captionnamefont{\zihao{5}\bf}
\captiontitlefont{\zihao{5}\bf}
\setlength{\abovecaptionskip}{6bp}
%    \end{macrocode}
% 使用amsmath设置图表编号
%    \begin{macrocode}
\RequirePackage{amsmath}
\numberwithin{table}{chapter}
\numberwithin{figure}{chapter}
\renewcommand{\thetable}{\thechapter-\arabic{table}}
\renewcommand{\thefigure}{\thechapter-\arabic{figure}}
%    \end{macrocode}
% 图片路径设置
%    \begin{macrocode}
\RequirePackage{graphicx}
\graphicspath{{./}{figures/}}
%    \end{macrocode}
%
% \subsection{参考文献}
%
% \begin{macro}{thebibliography}
% 由于默认情况下参考文献不会出现在目录索引中，因此重定义。
%    \begin{macrocode}
\RequirePackage[numbers,super,sort&compress]{natbib}
\bibpunct{[}{]}{,}{s}{}{,}

\setlength{\bibsep}{0.5ex}

\newcommand{\inlinecite}[1]{
  \begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup
}
\renewcommand{\thebibliography}[1]{
  \if@openright\cleardoublepage\else\clearpage\fi
  \@mainmatterfalse
  \chapter{\bibname}
  \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{其他}
% \begin{environment}{acknowledgements}
% 致谢环境
%    \begin{macrocode}
\newenvironment{acknowledgements}{
  \chapter{致谢}
}{}
%    \end{macrocode}
% \end{environment}
% \begin{environment}{publications}
% 研究成果环境
%    \begin{macrocode}
\newenvironment{publications}{
  \chapter{攻读学位期间取得的研究成果}
}{}
%    \end{macrocode}
% \end{environment}
%    \begin{macrocode}
%</class>
%    \end{macrocode}
% \section{~swustextra~ 代码实现}
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
% \subsection{导入依赖宏包}
%  利用tabu进行表格绘制。更多关于tabu的使用请查看其使用手册。
%    \begin{macrocode}
\RequirePackage{tabu}
%    \end{macrocode}
% \subsection{列表}
% itemindent: 标签缩进量
% itemsep: 条目之间的间距
% topsep: 列表到上下文的垂直距离
% listparindent: 列表中段落缩进
% leftmargin: 左边界
% labelsep: 标号和列表项之间的距离
% parsep: 段落间距
%    \begin{macrocode}
\RequirePackage{enumitem}
\renewcommand{\labelenumi}{(\arabic{enumi})}
\setitemize[1]{itemindent=4em,itemsep=0ex,parsep=0ex,topsep=0ex,listparindent=2em,leftmargin=0em}
\setenumerate[1]{itemindent=4em,itemsep=0ex,parsep=0ex,topsep=0ex,listparindent=2em,leftmargin=0em}
%    \end{macrocode}
% \subsection{代码格式}
% 排版论文中的代码
% \subsection{参考文献设置}
%    \begin{macrocode}
\RequirePackage{color}
\RequirePackage{listings}
\lstset{
  language={[ANSI]C},
  tabsize=2,
  numbers=left,
  xleftmargin=1em,
  xrightmargin=1em,
  breaklines=true,
  breakatwhitespace=true,
  basicstyle=\tt,
  directivestyle=\tt,
  identifierstyle=\tt,
  commentstyle=\tt,
  stringstyle=\tt,
  keywordstyle=\color{blue}\tt
}
\lstdefinestyle{swustsql}{
  language=SQL
}
%    \end{macrocode}
% 使用自定义的参考文献格式
%    \begin{macrocode}
\bibliographystyle{swustthesis}
%    \end{macrocode}
%    \begin{macrocode}
%</package>
%    \end{macrocode}
% \Finale
\endinput
